var utils = require('../../utils/util');
Page({

  /**
   * 页面的初始数据
   */
  data: {
    keyword: "",
    visible: false,
    projectList: [],
    dataList: [],
    markers: [],
    longitude: 0,
    latitude: 0,
    stage: {
      value: 'all',
      options: [{
          value: 'all',
          label: '全部',
        },
        {
          value: '竣备阶段',
          label: '竣备阶段',
        },
        {
          value: '二次装修',
          label: '二次装修',
        },
        {
          value: '主体施工',
          label: '主体施工',
        },
        {
          value: '桩基施工',
          label: '桩基施工',
        },
        {
          value: '方案征询',
          label: '方案征询',
        },
      ],
    },
    area: {
      value: 'all',
      options: [{
          value: 'all',
          label: '全部',
        }, {
          value: '示范区',
          label: '示范区',
        },
        {
          value: '普适区',
          label: '普适区',
        },
        {
          value: '重点区',
          label: '重点区',
        },
      ],
    },
    workable: {
      value: [],
      options: [{
          value: '全地下停车',
          label: '全地下停车',
        },
        {
          value: '高品质用水',
          label: '高品质用水',
        },
        {
          value: '充电桩配建',
          label: '充电桩配建',
        },
        {
          value: '海绵城市',
          label: '海绵城市',
        },
        {
          value: '开关站',
          label: '开关站',
        },
        {
          value: '环卫系统',
          label: '环卫系统',
        },
        {
          value: '访客停车',
          label: '访客停车',
        },
        {
          value: '绿色建筑',
          label: '绿色建筑',
        },
        {
          value: '超低能耗',
          label: '超低能耗',
        },
        {
          value: '健康建筑',
          label: '健康建筑',
        },
        {
          value: '夹心保温',
          label: '夹心保温',
        },
        {
          value: '北连廊户型',
          label: '北连廊户型',
        },
        {
          value: '户型可变',
          label: '户型可变',
        },
        {
          value: '5G全覆盖',
          label: '5G全覆盖',
        },
        {
          value: '光纤到户',
          label: '光纤到户',
        },
        {
          value: 'BIM运维',
          label: 'BIM运维',
        },
        {
          value: '智慧管理',
          label: '智慧管理',
        },
        {
          value: '智慧家居',
          label: '智慧家居',
        },
        {
          value: '智慧安防',
          label: '智慧安防',
        },
        {
          value: '智慧燃气',
          label: '智慧燃气',
        }
      ],
    }
  },

  getProjectList(latitude, longitude) {
    wx.cloud.callFunction({
      name: 'getProjectList',
      data: {
        stage: this.data.stage.value,
        area: this.data.area.value,
        keyword: this.data.keyword
      },
      success: data => {
        const res = data.result
        // 生成标记点
        const markersList = []
        for (const index in res.data) {
          const flag = utils.isCheckOptions(JSON.parse(res.data[index].options), this.data.workable.value)
          const obj = {
            id: parseInt(index),
            iconPath: flag ? "../../public/images/marker_checked.png" : "../../public/images/marker_no.png",
            latitude: res.data[index].latitude,
            longitude: res.data[index].longitude,
            width: 20, //图片显示宽度
            height: 28, //图片显示高度
            title: res.data[index].name,
            callout: {
              display: "ALWAYS",
              fontSize: 14,
              borderRadius: 10,
              padding: 6,
              content: res.data[index].name
            }
          }
          markersList.push(obj)
        }
        if (res.data.length > 0) {
          this.setData({
            projectList: res.data,
            dataList: res.data,
            markers: markersList,
            latitude: latitude || res.data[0].latitude,
            longitude: longitude || res.data[0].longitude
          })
        } else {
          this.setData({
            projectList: res.data,
            dataList: res.data,
            markers: [],
          })
        }
      },
      fail: err => {
        console.error(err)
      }
    })
  },
  changeStage(e) {
    this.setData({
      'stage.value': e.detail.value,
    })
    this.getProjectList()
  },
  changeArea(e) {
    this.setData({
      'area.value': e.detail.value,
    });
    this.getProjectList()
  },
  changeWorkable(e) {
    this.setData({
      'workable.value': e.detail.value,
    });
    if (e.detail.value.length == 0) {
      this.getProjectList()
    }
  },
  confirmWorkable() {
    this.getProjectList()
  },
  handleMarkerTap(e) {
    const list = [].concat(this.data.dataList)
    const arr = this.moveElementToFirst(list, e.markerId)
    this.setData({
      visible: true,
      projectList: arr
    });
  },
  onVisibleChange(e) {
    this.setData({
      visible: e.detail.visible,
    });
  },

  moveElementToFirst(arr, index) {
    if (index < arr.length) {
      const element = arr.splice(index, 1);
      arr.unshift(element[0]);
    }
    return arr;
  },

  toDetail(e) {
    const {
      id
    } = e.currentTarget.dataset
    wx.navigateTo({
      url: `../detail/index?id=${id}`
    })
  },

  changeKeyword(e) {
    this.setData({
      keyword: e.detail.value,
    });
    this.getProjectList()
  },
  clearKeyword(e) {
    this.setData({
      keyword: "",
    });
    this.getProjectList()
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.getProjectList(options.latitude, options.longitude)
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  onShow() {},

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})